package model;

import interfaces.AbstractWish;

import java.util.ArrayList;
import java.util.HashMap;
import wishes.WishToDrink;
import wishes.WishToEat;

public class ShoppingList extends CustomMap {

	public ShoppingList(int initValue, int maxValue, ArrayList<String> keys) {
		super(initValue, maxValue, keys);
	}

	public void update() {
		Model model = Model.getInstance();
		CustomMap wishes = new CustomMap(0, Model.LAGER_MAX_ANZAHL,  Model.ingredientsNames());
		HashMap<String, Integer> lager = Model.getInstance().getStock().getMap();

		// Liste der Zutaten aus den Wünschen erstellen
		for (AbstractWish wish : model.getWishes()) {
			if (wish instanceof WishToDrink) {
				wishes.add(((WishToDrink) wish).getDrink().getIngredients());
			}
			else if (wish instanceof WishToEat) {
				wishes.add(((WishToEat) wish).getFood().getIngredients());
			}
		}

		// Die Liste der benötigten Zutaten mit dem Lagerbestand vergleichen
		for (String key : wishes.getMap().keySet()) {
			// Wird mehr gebraucht als am Lager momentan ist?
			if (wishes.getMap().get(key) > lager.get(key)) {
				int difference = wishes.getMap().get(key) - lager.get(key);
				wishes.getMap().put(key, difference);
			}
			else {
				wishes.getMap().put(key, 0);
			}
		}
		// die neue shoppingList
		map = wishes.getMap();
	}
}